package com.bjxst;

import java.io.*;

/**通过转换流实现键盘输入屏幕输出
 * InputStreamReader/OutputStreamWriter 用来实现将字节流转化成字符流*/
/*System.in 是字节流对象，代表键盘的输入，如果我们想按行接收用户的输入
* 时，就必须用到缓冲字符流BufferReader特有的方法readLine(),但是经过观察会
* 发现在创建BufferedReader的构造方法的参数必须是一个Reader对象，这时候我们的转换流
* InputStreamReader就派上用场
*   System.out 也是字节流对象，代表输出到显示器，按行读取用户的输入后，并且要将读取的一行字
* 符串直接显示控制台，就需要用到字符的writer(String str)方法 ，所以我们
* 要使用OutputStreamWriter 将字节流转为字符流 */
public class ConvertStream {
    public static void main(String[] args) {

       /* //只可以读取一个字节
        try{
            InputStream is = System.in;//以字节形式输入
            int input = is.read();
            System.out.println(input);//二进制整数
        }catch (Exception e){
            e.printStackTrace();
        }*/
        BufferedReader br = null;
        BufferedWriter bw = null;
        try{
            //InputStreamReader是处理流，把用户传入来的字节转换为字符流，
            // 再把这个字符流放入字符缓冲流BufferedReader
            //这是用System.out.println()输出
           /* br = new BufferedReader(new InputStreamReader(System.in));
            String input = br.readLine();
            System.out.println(input);*/

            /*br = new BufferedReader(new InputStreamReader(System.in));
            bw = new BufferedWriter(new OutputStreamWriter(System.out));
            String input = br.readLine();
            bw.write(input);
            bw.flush();*/
            //用户不断输入   没有使用Scanner对象
            br = new BufferedReader(new InputStreamReader(System.in));
            bw = new BufferedWriter(new OutputStreamWriter(System.out));
            while (true){
                bw.write("请输入：");
                bw.flush();//刷新
                String input = br.readLine();
                if("exit".equals(input)){
                    break;
                }
                bw.write("你输入的是："+input);
                bw.newLine();//新一行
                bw.flush();
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //关闭不分先后顺序
            try{
                if(bw != null){
                    bw.close();
                }
                if(br != null){
                    br.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}
